iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0
Google Developers Machine Learning

ML Study Jam -機器學習系列 第 18

Day 18 Raw Data to Features part 1 (原始資料特徵)

  • 分享至 

  • xImage
  •  

Feature Enginnering

Raw Data to Features part 1

raw data

甚麼樣的raw data是可以當作我們的特徵呢???今天我們想要預測一樣東西可能房價、股票、某些特定的行為,集使我們擁有以上我們想進行問題的特徵,那又有問題出現了,甚麼樣的特徵才是所謂好的特徵呢??以下有五個要點要去注意。

  1. 最好是與我的目標有相關
  2. 能夠有效準確在預測時知道的數據
  3. 是數字並且他具有意義
  4. 有足夠的例子
  5. 人類可以做規範的問題

我們利用舉例的方式來幫助大家理解

1. 最好是與我的目標有相關

https://ithelp.ithome.com.tw/upload/images/20190919/2012028926lRizwnsK.png

假設我們今天希望知道上面這間漂亮的房子要賣多少錢那甚麼是對於「價錢』是有正相關的呢?

  • 這間房子的大小
  • 歷史銷售價格
  • 位於哪個地區
  • 裡面房間的個數

這些對於房價都是有關連性的,就連人類買房子也會觀察這些要素,那機器有甚麼不把這些特徵納入的原因呢?
但像是有沒有草地、要不要收管理費、裡面的地板材質這些特徵對於目標好像就不是有那麼大的關係。

2. 能夠有效準確在預測時知道的數據

這問題主要是在說,若是今天我預測的數據其實是一直做改變的那要怎麼辦呢??
以上面的例子來說誰可以保證房價有沒有可能一夕之間崩盤或是暴漲,沒有人可以確定啊
機器學習的永遠是過去的事物,他只是依照過去的經驗來推算未來

https://ithelp.ithome.com.tw/upload/images/20190919/20120289nJaQnnmB32.png

這邊舉了一個例子,關於折價券的問題,利用上個月折價券的相關特徵,來推算使用未來人數,這邊有幾個特徵是可以參考的依據

  • 銷售折扣商品的總數
  • 上個月銷售的數量
  • 有查看商品廣告的客戶數量

這些都是可以參考的過去依據,做ML最怕的就是發現訓練好的模型並不能被使用,在做特徵萃取的時候就應該依照特徵的特性來做選取會是比較好的方式。

3. 是數字並且他具有意義

這邊沿用上面折價券的問題
我們需要去量化我們折價券的使用,那要怎麼量化呢??
我們可以依照一些面向去看

  • 今天折扣的%是多少
  • 折價券的大小
  • 折價券上面的字體是甚麼
  • 折價券的顏色
  • 折價券上的項目種類

當然到這邊一定會有人提出質疑,舉字體這個例子好了,字體又不是數字要怎麼量化?
最常見的方法就是把他做Word2vec,那甚麼又是Word2vec?
Word2vec簡單來說就是把文字變成向量,把文字轉換置相對應的向量當中,而向量就只是一連串的數字組合而成,那我是不是可以量化字體這個東西了

https://ithelp.ithome.com.tw/upload/images/20190919/20120289OPMOjnLkpM.png

4. 有足夠的例子

這部分其實可以不用多做解釋,舉個簡單的例子
https://ithelp.ithome.com.tw/upload/images/20190919/201202898ks2vW67O5.png

今天希望了解信用卡有沒有被盜刷,最簡單的一些特徵

  • 刷卡的人在被盜刷之前,有沒有買過此次被盜刷的物品
  • 卡片擁有者與刷卡商店的距離
  • 購買商品的類別
  • 線下還是線上購買

這邊舉的特徵全部都是需要有足夠的example才有辦法做計算,有哪台機器能夠有上述特徵的其中一筆資料就可以預測出結果??
再舉一個更簡單的例子,希望得到某些青少年使用手機的頻率,然後我的資料集分布卻是0~50歲
這樣也就算了,那如果青少年分布的比例只有訓練資料的一半,那這個問題除了沒有足夠的特徵,也沒有實際的資料能夠表示我想解決的問題,基本上這目標一開始就定義錯了。

5. 人類可以做規範的問題

這問題有點抽象,甚麼叫做人類可以規範的問題
我這邊利用投影片上冰淇淋銷售的問題來做解釋

https://ithelp.ithome.com.tw/upload/images/20190919/20120289j4WbJ3inpZ.png

這邊有一個銷售格式的資料
我們可以很明顯看到

  • price
  • waitTime

這些都是很容易做解釋的數字也是能夠拿來使用的特徵,那transactionId呢?這好像就不是那麼重要
那如果今天我們希望找到賣的最好的職員那employeeId是不是變的很重要了,職員編號723658感覺起來可以做訓練
但我的編號從0~723658中間只有五位員工現在還在這家公司工作,有必要把中間這麼多的數字來做去除嗎??
這便介紹一個方法叫做one-hot encoded,如下圖所示,我能夠利用五組數字的排列組合代表現在訓練的是哪一位
對於機器來說這更為直觀,因為他本來就是在處理0、1的事情不是嘛?

https://ithelp.ithome.com.tw/upload/images/20190919/20120289cEnSMHxeru.png

當然tensorflow一定也支援這些方式
等到明天實際做實驗的時候就會遇到了,我們到時候再仔細講述相關步驟與原理。

※圖片參考至 Feature Engineering resource


上一篇
Day 17 Scaling TensorFlow models (拓展我們的模型吧)
下一篇
Day 19 Raw Data to Features part 2 (如何使用原始資料做實驗)
系列文
ML Study Jam -機器學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言